/**
 *   Sidecar - https://github.com/huan/sidecar
 *
 *   @copyright 2021 Huan LI (李卓桓) <https://github.com/huan>
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 */
import fs from 'fs'
import path from 'path'

import {
  Sidecar,
  SidecarBody,
  Call,
  Hook,
  Ret,
  agentTarget,
}                 from 'sidecar'

import { codeRoot } from '../cjs.js'

const winapi = fs.readFileSync(path.join(
  codeRoot,
  'src',
  'agents',
  'winapi.js',
), 'utf-8')

@Sidecar('WeChat.exe', winapi)
class WeChatVersion extends SidecarBody {

  //       @Call(agentTarget('getWechatVersion'))
  //    getWechatVersion ():Promise<string> { return Ret() }

  @Call(agentTarget('getWechatVersionStringFunction'))
  getWechatVersion ():Promise<string> { return Ret() }

  @Hook(agentTarget('agentReadyCallback'))
  agentReady (
  ) { return Ret() }

}

export { WeChatVersion }
